package cn.jbolt.core.api;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;

import java.io.Serializable;
import java.util.List;

/**
 * Api中的User
 *
 * @ClassName: ApiUser
 * @author: JFinal学院-小木 QQ：909854136
 * @date: 2019年9月12日
 */
public interface JBoltApiUser extends Serializable,Cloneable {
	/**
	 * 是否userId是jb_user系统用户
	 * @return
	 */
	public boolean getIsSystemUser();
	/**
	 * 用户ID
	 * @return
	 */
	@JSONField(serializeUsing= ToStringSerializer.class)
	public Object getUserId();

	/**
	 * onlineUser的ID
	 * @return
	 */
	@JSONField(serializeUsing= ToStringSerializer.class)
	public Long getOnlineUserId();
	/**
	 * 用户ID
	 * @param <T>
	 * @return
	 */
	@JSONField(serialize = false)
	public <T> T getUserIdAs();
	/**
	 * 用户ID转LONG
	 * @return
	 */
	@JSONField(serialize = false)
	public Long getUserIdToLong();
	/**
	 * 用户ID转INT
	 * @return
	 */
	@JSONField(serialize = false)
	public Integer getUserIdToInt();
	/**
	 * 用户ID转字符串
	 * @return
	 */
	@JSONField(serialize = false)
	public String getUserIdToStr();
	/**
	 * 名
	 * @return
	 */
	public String getUserName();
	/**
	 * 应用 application的id
	 * @return
	 */
	@JSONField(serializeUsing= ToStringSerializer.class)
	public Long getApplicationId();

	/**
	 * 小程序SessionKey
	 * @return
	 */
	public String getSessionKey();

	/**
	 * 关联其它用户表
	 * @return
	 */
	public List<JBoltApiBindUserBean> getBindUsers();

	/**
	 * 是否是租户端
	 * @return
	 */
	public boolean getIsTenant();
	/**
	 * 获取租户sn
	 * @return
	 */
	public String getTenantSn();

	/**
	 * 获取校验jwt api user 有效性token
	 * @return
	 */
	public String getCheckEffectiveToken();

	/**
	 * 设置校验jwt api user 有效性token
	 * @param checkEffectiveToken
	 */
	public void setCheckEffectiveToken(String checkEffectiveToken);
}
